package com.atguigu.tingshu.common.util;

import lombok.Getter;

public class MongoUtil {

    @Getter
    public enum MongoCollectionEnum {

        /*
        列举所有可能：本质上产生多个对象（多例）
        * */
        USER_SUBSCRIBE(100,"userSubscribe"),  //用户订阅记录
        USER_COLLECT(100,"userCollect"),     //用户收藏记录
        USER_LISTEN_PROCESS(100,"userListenProcess"), //用户播放进度
        COMMENT(100,"comment"),  //用户评论
        COMMENT_PRAISE(100,"commentPraise"), //用户评论点赞记录
        ;

        /*
        ①定义属性：分区数字 固定、集合名称前缀
        * */
        private Integer partition;
        private String collectionPrefix;

        /*
        ②提供私有构造，通过构造进行对属性赋值
        * */
        MongoCollectionEnum(Integer partition, String collectionPrefix) {
            this.partition = partition;
            this.collectionPrefix = collectionPrefix;
        }

    }


    /**
     * 获取mongo表名
     * @param mongoCollection Collection前缀
     * @param route 路由
     * @return
     */
    public static String getCollectionName(MongoCollectionEnum mongoCollection, Long route) {
        return mongoCollection.getCollectionPrefix() + "_" + route % mongoCollection.getPartition();
    }
}

